An integrated development environment (IDE) is a software program that aids computer programmers in developing software. IDE's are also known by “integrated design environments” and “integrated debugging environments.” IDE's typically consist of a source code editor, a compiler, an interpreter, build-automation tools and a debugger. Additionally, an IDE may include a version control system, various tools to simplify the construction of a graphical user interface (“GUI”), a class browser, an object inspector, and/or a class hierarchy diagram. An IDE is typically devoted to a specific programming language.
An algorithm is any software code that performs a specified function or provides a specific problem-solving procedure. By combining algorithms, software developers can build software programs. Algorithms can often be used in multiple programs for multiple purposes. Typically, the applicability of an algorithm can be increased significantly by revising the algorithm, itself. Thus, where an algorithm has already been developed and is available, significant programming effort can be saved by modifying the available algorithm, rather than designing it anew.
Software development has become extremely sophisticated, complicated, and time-consuming as the demands on and sophistication of software programs have correspondingly increased. Commercial software is now typically developed in a collaborative environment where subsets of a large program are parceled out to different developers. Different parts of a large program can be assigned to a developer with the appropriate expertise. Developers often seek out and avail themselves of the personal and written expertise of other experienced developers who are not always assigned to the software development project at issue.
The collaborative software design process typically involves the use, or the modification and then use, of already developed and available algorithms. In order to effectively use these available algorithms, software developers must be able to efficiently locate available algorithms for ones that are suitable for their needs, evaluate the suitability of those algorithms, and determine what modifications to the algorithms are necessary to integrate the algorithm into the software program being developed. In evaluating the efficacy of a given algorithm, software developers are performing a task often already performed by another developer: determining whether a given algorithm is suitable for a given application or requirement.
IDE users are relegated to searching outside of their respective IDE's to locate and evaluate the effectiveness of an existing algorithm. In this sense, IDE's are static and do not facilitate a collaborative environment. As a result, many software developers develop software code and algorithms that already exist. The same software code or algorithms are developed repeatedly and the same software errors, or bugs, are often written into the software and later edited out. This practice leads to duplicative and wasted effort, as well as to lower quality software products.
For at least these reasons, there exists a need for an improved IDE, allowing software developers to search for existing, available algorithms and benefit from feedback provided by other software developers regarding the selected algorithm.